6ca397b8d56b282b60ae934c09bf782a6ccfa5ff,src/main/java/org/sigmah/client/ui/presenter/project/dashboard/PhasesPresenter.java,PhasesPresenter,loadPhaseOnTab,#PhaseDTO#,568

Before Change



			// Creates the fieldset and positions it.
			final FieldSet formPanel = (FieldSet) groupDTO.getWidget();
			layoutGrid.setWidget(groupDTO.getRow(), groupDTO.getColumn(), formPanel);

			// For each constraint in the current layout group.
			for (final LayoutConstraintDTO constraintDTO : groupDTO.getConstraints()) {

				// Gets the element managed by this constraint.
				final FlexibleElementDTO elementDTO = constraintDTO.getFlexibleElementDTO();
				
				// --
				// -- DISABLED ELEMENTS
				// --
				if(elementDTO.isDisabled() && 
					(phaseDTO.getEndDate() == null || phaseDTO.getEndDate().after(elementDTO.getDisabledDate()))) {
					// Hiding the field if the current phase is opened or
					// if it has been closed AFTER the field was disabled.
					unmask();
					continue;
				}

				// --
				// -- ELEMENT VALUE
				// --

				// Retrieving the current amendment id.
				final Integer amendmentId;
				if (project.getCurrentAmendment() != null) {
					amendmentId = project.getCurrentAmendment().getId();
				} else {
					amendmentId = null;
				}

				// Remote call to ask for this element value.
				queue.add(new GetValue(getCurrentProject().getId(), elementDTO.getId(), elementDTO.getEntityName(), amendmentId),
					new CommandResultHandler<ValueResult>() {

						@Override
						public void onCommandFailure(final Throwable throwable) {
							if (Log.isErrorEnabled()) {
								Log.error("Error, element value not loaded.", throwable);
							}
							unmask();
						}

						@Override
						public void onCommandSuccess(final ValueResult valueResult) {

							if (Log.isDebugEnabled()) {
								Log.debug("Element value(s) object : " + valueResult);
							}

							// --
							// -- ELEMENT COMPONENT
							// --

							// Configures the flexible element for the current application state before generating its component.
							elementDTO.setService(dispatch);
							elementDTO.setEventBus(eventBus);
							elementDTO.setAuthenticationProvider(injector.getAuthenticationProvider());
							elementDTO.setCache(injector.getClientCache());
							elementDTO.setCurrentContainerDTO(getCurrentProject());
							elementDTO.setTransfertManager(injector.getTransfertManager());
							elementDTO.assignValue(valueResult);

							final ProjectPresenter projectPresenter = injector.getProjectPresenter();
							
							// Generates element component (with the value).
							elementDTO.init();
							final Component elementComponent = elementDTO.getElementComponent(valueResult, phaseIsEnded);
							
							if(elementDTO.getAmendable() && projectPresenter.projectIsLocked() && projectPresenter.canUnlockProject() && !ProfileUtils.isGranted(auth(), GlobalPermissionEnum.MODIFY_LOCKED_CONTENT)) {
								projectPresenter.addUnlockProjectPopup(elementDTO, elementComponent, view);
							}
							
							// Component width.
							final FormData formData;
							if (elementDTO.getPreferredWidth() == 0) {
								formData = new FormData("100%");
							} else {
								formData = new FormData(elementDTO.getPreferredWidth(), -1);
							}

							if (elementComponent != null) {
								formPanel.add(elementComponent, formData);
							}

							formPanel.layout();

							// --
							// -- ELEMENT HANDLERS
							// --

							// Adds a value change handler to this element.
							elementDTO.addValueHandler(new ValueHandlerImpl());
							
							// Adds a value change handler if this element is a dependency of a ComputationElementDTO.
							computationTriggerManager.listenToValueChangesOfElement(elementDTO, elementComponent, valueChanges);

							// If this element id a required one.
							if (elementDTO.getValidates()) {

								// Adds a specific handler.
								elementDTO.addRequiredValueHandler(new RequiredValueHandlerImpl(elementDTO));

								// Set the groupDTO into the element
								elementDTO.setGroup(groupDTO);

								elementDTO.setConstraint(constraintDTO);

								// Adds the element to the tmp list for sorting
								requiredElemetsList.add(elementDTO);

								// Clear the store
								view.getGridRequiredElements().getStore().removeAll();

								// Sorting and add the list to the view
								view.getGridRequiredElements().getStore().add(sortRequiredElements(requiredElemetsList));

								// Refresh header
								refreshRequiredElementContentPanelHeader();

								// Map the required element for the current
								// displayed phase.
								currentPhaseRequiredElements.putSaved(elementDTO.getId(), elementDTO.isFilledIn());

								// If the current displayed phase is the active one,
								// map the required element for the active phase.
								if (isCurrentPhase(getCurrentProject().getCurrentPhase())) {
									activePhaseRequiredElements.putSaved(elementDTO.getId(), elementDTO.isFilledIn());
								}
							}

							unmask();
						}
					});
			}
		}

After Change


		for (final LayoutGroupDTO groupDTO : phaseDTO.getPhaseModel().getLayout().getGroups()) {

			// simple group
			if(!groupDTO.getHasIterations()) {
				FieldSet fieldSet = createGroupLayoutFieldSet(getCurrentProject(), groupDTO, queue, null, null, null);
				layoutGrid.setWidget(groupDTO.getRow(), groupDTO.getColumn(), fieldSet);
				continue;
			}

			final FieldSet fieldSet = (FieldSet) groupDTO.getWidget();
			layoutGrid.setWidget(groupDTO.getRow(), groupDTO.getColumn(), fieldSet);

			// iterative group
			final IterableGroupPanel tabPanel = Forms.iterableGroupPanel(dispatch, groupDTO, getCurrentProject(), ProfileUtils.isGranted(auth(), GlobalPermissionEnum.CREATE_ITERATIONS) && getCurrentProject().getCurrentAmendment() == null);
			tabPanel.setDelegate(this);
			fieldSet.add(tabPanel);

			tabPanel.setAutoHeight(true);
			tabPanel.setAutoWidth(true);
			tabPanel.setTabScroll(true);
			tabPanel.addStyleName("white-tab-body");
			tabPanel.setBorders(true);
			tabPanel.setBodyBorder(false);

			Integer amendmentId;

			if (getCurrentProject().getCurrentAmendment() != null) {
				amendmentId = getCurrentProject().getCurrentAmendment().getId();
			} else {
				amendmentId = -1;
			}

			GetLayoutGroupIterations getIterations = new GetLayoutGroupIterations(groupDTO.getId(), getCurrentProject().getId(), amendmentId);

			queue.add(getIterations, new CommandResultHandler<ListResult<LayoutGroupIterationDTO>>() {

				@Override
				public void onCommandFailure(final Throwable throwable) {
				  if (Log.isErrorEnabled()) {
					  Log.error("Error, layout group iterations not loaded.", throwable);
					}
					throw new RuntimeException(throwable);
				}

				@Override
				protected void onCommandSuccess(ListResult<LayoutGroupIterationDTO> result) {
					DispatchQueue iterationsQueue = new DispatchQueue(dispatch, true);

					for(final LayoutGroupIterationDTO iteration : result.getList()) {

						final IterableGroupItem tab = new IterableGroupItem(tabPanel, iteration.getId(), iteration.getName());
						tabPanel.addIterationTab(tab);

						Layout tabLayout = Layouts.fitLayout();

						tab.setLayout(tabLayout);

						FieldSet tabSet = createGroupLayoutFieldSet(getCurrentProject(), groupDTO, iterationsQueue, iteration == null ? null : iteration.getId(), tabPanel, tab);

						tab.add(tabSet);
					}

					iterationsQueue.start();

					if(tabPanel.getItemCount() > 0) {
						tabPanel.setSelection(tabPanel.getItem(0));
					}
				}
			}, new LoadingMask(view.getTabPanelPhases()));

			fieldSet.layout();

		}